//package com.tools.common.utils;
//
//import android.app.ActivityManager;
//import android.app.usage.UsageStats;
//import android.content.Context;
//import android.content.Intent;
//import android.content.pm.PackageManager;
//import android.content.pm.ResolveInfo;
//import android.os.Build;
//import android.text.TextUtils;
//
//import java.util.List;
//import java.util.TreeMap;
//
///**
// * Created by joe_wang on 10/23/2017.
// */
//
//public class TaskUtil {
//    public static String getTopAppPkg(Context context) {
//        if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) {
//            return getTopAppPkgByRunningTask(context);
//        }
//
//        String top = getTopAppPkgByRunningProc(context);
//        if(!TextUtils.isEmpty(top)) {
//            return top;
//        } else {
//            return getTopAppPkgByUsageStats(context);
//        }
//    }
//
//    private static String getTopAppPkgByRunningTask(Context context) {
//        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
//        List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1);
//        if(tasks == null || tasks.size() < 1) {
//            return null;
//        }
//
//        return tasks.get(0).topActivity.getPackageName();
//    }
//
//    private static String getTopAppPkgByRunningProc(Context context) {
//        List<ActivityManager.RunningAppProcessInfo> running;
//        try {
//            ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
//            running = am.getRunningAppProcesses();
//
//            if (running == null || running.size() < 1) {
//                return null;
//            }
//        } catch (OutOfMemoryError e) {
//            return null;
//        }
//
//        for (ActivityManager.RunningAppProcessInfo proc : running) {
//            if (proc == null || proc.importance != ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
//                continue;
//            }
//
//            String topPkg = proc.processName;
//
//            if(proc.pkgList != null && proc.pkgList.length > 0) {
//                for(String pkg : proc.pkgList){
//                    if(packageHasActivities(context, pkg)) {
//                        topPkg = pkg;
//                        break;
//                    }
//                }
//            }
//
//            if(proc.pkgList != null && proc.pkgList.length == 1) {
//                topPkg = proc.pkgList[0];
//            } else if (proc.processName.contains(":")) {
//                topPkg = proc.processName.split(":")[0].trim();
//            } else if (proc.importanceReasonComponent != null) {
//                topPkg = proc.importanceReasonComponent.getPackageName();
//            }
//
//            return topPkg;
//        }
//        return null;
//    }
//
//    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
//    private static String getTopAppPkgByUsageStats(Context context) {
//        List<UsageStats> list = UsageStatsUtils.get(context);
//        if(list == null || list.size() < 1) {
//            return null;
//        }
//
//        TreeMap treeMap = new TreeMap<Long, UsageStats>();
//        for (UsageStats usageStats : list) {
//            treeMap.put(usageStats.getLastTimeUsed(), usageStats);
//        }
//
//        UsageStats targetItem = (UsageStats)treeMap.get(treeMap.lastKey());
//        return targetItem.getPackageName();
//    }
//
//    private static boolean packageHasActivities(Context context, String packageName) {
//        final PackageManager packageManager = context.getPackageManager();
//
//        final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
//        mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
//        mainIntent.setPackage(packageName);
//
//        final List<ResolveInfo> apps = packageManager.queryIntentActivities(mainIntent, 0);
//        return apps != null && apps.size() > 0;
//    }
//}
